package week2;


import java.util.HashMap;

/**
 *
 * 560. 和为 K 的子数组
 * https://leetcode-cn.com/problems/subarray-sum-equals-k/
 *
 *
 * 执行结果：  通过  显示详情
 *
 * 添加备注
 * 执行用时：21 ms, 在所有 Java 提交中击败了92.54% 的用户
 * 内存消耗：40.5 MB, 在所有 Java 提交中击败了95.15% 的用户
 * 通过测试用例：89 / 89
 * 炫耀一下:
 *
 */
public class Week2SubarraySumEqualsK {

    public int subarraySum(int[] nums, int k) {
        int count = 0;
        int preSum = 0;
        HashMap<Integer, Integer> map = new HashMap<Integer, Integer>();
        map.put(0, 1);
        for(int size = 0; size < nums.length; size++) {
            preSum += nums[size];
            if(map.containsKey(preSum - k)) {
                count += map.get(preSum - k);
            }
            map.put(preSum, map.getOrDefault(preSum, 0) + 1);
        }

        return count;
    }
}
